//
// Created by Yurzi on 2021/3/22.
//
/*
 * 界面相关的函数
*/
#ifndef CEDUGROUPWORK_UI_H
#define CEDUGROUPWORK_UI_H

#include "UIEngine.h"
#include "GlobalDefinitions.h"
#include "ListOperations.h"
#include "DataTypes.h"
#include "ProcessControl.h"
#include "RegressionPrediction.h"


int welcomeUI();//欢迎界面
int chooseModeUI();//模式选择界面


void SellMainUI();//购买主界面
void AllGoodsUI();	//全部商品界面
int AllGoodUI_Page(Kind * hk);	//全部商品界面-按页
void ChooseAndTag();//选择与标签
int CertainGoodsUI();//分类商品界面
void ShopCarUI();	//购物车界面
void ShowOneGoodInfo(int x0, int y0, Good* hg);//打印一个商品的全部信息
void ShowOneTagInfo(int x0, int y0, Tag* ht);//打印一个标签全部信息
void ShowNowGoodTag(int x0, int y0, Good* hg);// 打印一个商品的全部标签
void ShowNowGoodMT(int x0, int y0, Good* hg);//打印一个商品的全部原料
void ShowNowTagMT(int x0, int y0, Tag* hg); //打印一个标签的原料
//void I_H_massage(Good* hg,char*s);
void B_S_massage(Good* hg, char*s);
void I_H_massage1(Good* hg, char* s);
void B_S_massage1(Good* hg,  char* s) ;
void PrtOneGood(int x1, int y1, Good* hg);//打印一个商品的信息，前两个参数是开始坐标，第三个是商品指针
Good* FindGoodById(int id);//寻找商品
Kind* FindKindById(int id);//寻找类别

int bgModeUI();//后台模式选择界面
int bgGoodModeUI();//后台商品管理选择界面
int bgInvModeUI();//后台库存管理选择界面



void material_printf(Material* h);//原料的打印
void ShowOneGoodInfo(int x0, int y0, Good* hg);//打印商品全部信息

int ShowOnePage(Good*hg0, Kind* hk0,/*kind和good链表头指针的地址*/ int pagen/*页数*/);//提供可翻页商品展示

void PredictByPastUI();//历史记录与预测界面
void ExitProgramUI();//退出系统



COORD bg_drawGoodMap(int _line);   //绘制商品显示表格
COORD bg_good_showOnePage(GoodPage *p,int ctrl);//显示一页商品
int bg_showOneGood(int num, Good *p,int x,int y,UINT uForce,UINT uBack);//显示一条商品
COORD bg_drawGoodLookOpe(int x,int y,int ctrl);//显示商品显示页面的操作

COORD bg_drawKindMap(int _line);//绘制类别的表格
COORD bg_kind_showOnePage(KindPage *p,int ctrl);//显示一页类别
int bg_showOneKind(int num, Kind *p,int x,int y,UINT uForce,UINT uBack);//显示一条类别
COORD bg_drawKindLookOpe(int x,int y,int ctrl);//显示类别显示页面的操作


COORD bg_drawTagMap(int _line);//绘制标签的表格
COORD bg_tag_showOnePage(TagPage *p,int ctrl);//显示一页标签
int bg_showOneTag(int num, Tag *p,int x,int y,UINT uForce,UINT uBack);//显示一条标签
COORD bg_drawTagLookOpe(int x,int y,int ctrl);//绘制标签操作区

COORD bg_drawMTMap(int _line);  //绘制原料的表格
COORD bg_mt_showOnePage(MTPage *p,int ctrl);//显示一页原料
int bg_showOneMT(int num,Material *p,int x,int y,UINT uForce,UINT uBack);//显示一条原料
COORD bg_drawMTLookOpe(int x,int y,int ctrl);//绘制原料操作区

COORD bg_drawLogMap(int _line);//绘制历史记录表格
COORD bg_log_showOnePage(LogPage *p,int ctrl);//显示一页历史记录
int bg_showOneLog(int num,LogNode *p,int x,int y,UINT uForce,UINT uBack);//显示一条的历史记录
COORD bg_drawLogLookOpe(int x,int y,int ctrl);//绘制历史记录操作栏
void showLogInfo(LogNode*hl);//显示一条历史记录的详细信息

#endif //CEDUGROUPWORK_UI_H
